package com.sinosoft.dsp.system.entity;

import java.util.ArrayList;
import java.util.List;

import com.sinosoft.dsp.system.utils.PersistenceUtils;

/**
 * 抽象的实体方法
 * 
 * @author 潘巍（PeterPan）
 * @since 2011-5-23 下午08:03:26
 * 
 */
public abstract class SinoAbstractEntity {

	/**
	 * 时间戳字段
	 * 
	 * @return
	 */
	public abstract String getTimestamp();

	public abstract void setTimestamp(String timestamp);

	/**
	 * 将校验值顺序加入集合中
	 * 
	 * @param list
	 */
	public abstract void setHashCodeData(List<String> list);

	/**
	 * 检查实体是否更新
	 * 
	 * @return true - 如果实体被更新返回
	 */
	public boolean checkUpdate() {
		if (getTimestamp() != null && !"".equals(getTimestamp()))
			if (getTimestamp().equals(getHashCode())) {
				return true;
			}
		return false;
	}

	private String getHashCode() {
		List<String> list = new ArrayList<String>();
		setHashCodeData(list);
		return PersistenceUtils.hash(list.toArray(new String[list.size()]));
	}

	/**
	 * 创建新的时间戳
	 */
	public void createNewTimestamp() {
		setTimestamp(getHashCode());
	}
}
